/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package acervo.persistence;

import acervo.connection.Conexao;
import acervo.model.DvdFilme;
import acervo.model.Midia;
import acervo.model.TipoMidia;
import acervo.util.Erro;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;

/**
 *
 * @author Deise
 */
public class DAODvdFilme extends AbstractDAO {

    public DAODvdFilme() {
        super();
    }

    public boolean save(Midia midia) {
        Statement st;        
        try {
            st = Conexao.getConexao().getCon().createStatement();
            String sql = "INSERT INTO DVDFilme VALUES('"+ ((DvdFilme) midia).getGenero() +"','" + midia.getTitulo() + "','" + midia.getLocalizacao() + "','" + midia.getObservacoes() + "')";
            st.executeUpdate(sql);        
            return true;
        } catch (SQLException ex) {
            Erro.LançarErro("Erro ao conectar com o Banco!\n" + ex.getMessage());      
            return false;
        }        
    }
    
    public boolean delete(int id) {
        Statement st;        
        try {
            st = Conexao.getConexao().getCon().createStatement();
            String sql = "DELETE from DVDFilme where id = " + id;
            st.executeUpdate(sql);    
            return true;
        } catch (SQLException ex) {
            Erro.LançarErro("Erro ao conectar com o Banco!\n" + ex.getMessage());
            return false;
        }
    }
    
    public boolean update(Midia midia) {
        Statement st;        
        try {
            st = Conexao.getConexao().getCon().createStatement();
            String sql = "UPDATE DVDFilme SET titulo = '" + midia.getTitulo() + 
                    "', localizacao = '" + midia.getLocalizacao() + 
                    "', observacoes = '" + midia.getObservacoes() + 
                    "', genero = '" + ((DvdFilme)midia).getGenero() +
                    "' WHERE id = " + midia.getId();
            st.executeUpdate(sql);    
            return true;
        } catch (SQLException ex) {
            Erro.LançarErro("Erro ao conectar com o Banco!\n" + ex.getMessage()); 
            return false;
        }
    }

    public DvdFilme select(int id) {
        Statement st; 
        Midia temp = new DvdFilme("");
        try {
            st = Conexao.getConexao().getCon().createStatement();            
            String sql = "SELECT * from DVDFilme WHERE id = " + id;
            ResultSet rs = st.executeQuery(sql);
            rs.next();
            temp.setId(rs.getInt("id"));
            temp.setTitulo(rs.getString("titulo"));
            temp.setLocalizacao(rs.getString("localizacao"));
            temp.setObservacoes(rs.getString("observacoes"));
            ((DvdFilme)temp).setGenero(rs.getString("genero"));
            temp.setTipo(TipoMidia.DVDFILME);
        } 
        catch (SQLException ex) {
            Erro.LançarErro("Erro ao conectar com o Banco!\n" + ex.getMessage());            
        }
        return (DvdFilme) temp;
    }

    public ArrayList<Midia> selectAll(String chave) {
        Statement st; 
        ArrayList<Midia> result = new ArrayList<Midia>();
        Midia temp;
        try {
            st = Conexao.getConexao().getCon().createStatement();            
            String sql = "SELECT * from DVDFilme "
                        + "WHERE localizacao like '%" + chave +"%' or " +
                                 "titulo like '%" + chave +"%' or " +
                                 "observacoes like '%" + chave +"%' or " +
                                 "genero like '%" + chave +"%'";
            ResultSet rs = st.executeQuery(sql);
            while(rs.next()){
                temp = new DvdFilme("");
                temp.setId(rs.getInt("id"));
                temp.setLocalizacao(rs.getString("localizacao"));
                temp.setTitulo(rs.getString("titulo"));
                temp.setTipo(TipoMidia.DVDFILME);
                result.add(temp);
            }
        } 
        catch (SQLException ex) {
            Erro.LançarErro("Erro ao conectar com o Banco!\n" + ex.getMessage());            
        }
        return result;
    }
    
}
